package common

type Value struct {
	s string
	b bool
	n float64
}

func (v *Value) AsString() string {
	return v.s
}

func (v *Value) AsBool() bool {
	return v.b
}

func (v *Value) AsFloat() float64 {
	return v.n
}

type TValue struct {
	value Value
	tt    byte
}

func NewStringTValue(val string) *TValue {
	return &TValue{
		value: Value{
			s: val,
		},
		tt: LUA_TSTRING,
	}
}

func NewBoolTValue(val bool) *TValue {
	return &TValue{
		value: Value{
			b: val,
		},
		tt: LUA_TBOOLEAN,
	}
}

func NewFloat64TValue(val float64) *TValue {
	return &TValue{
		value: Value{
			n: val,
		},
		tt: LUA_TNUMBER,
	}
}
